The present invention relates to a method and system for creating revisions of data files, and more particularly, to a system and method for creating patch files and aggregating them into secure, portable compressed archives for distribution. These archives are in a form that is applied to an original copy of the file to revise it (or patch it) to a newer version. The method of the invention includes the ability for combining, compressing, encrypting, authenticating and signing patch files. The present invention covers any type of data or file that may require revisions.
Software vendors are continually fixing, modifying, and enhancing the computer programs supplied to their customers. Typically, such changes are in response to bugs found in the programs, to the need for improved or more features, or a combination of both. In the past and still today, the predominant method of updating software and providing fixes is to supply customers a disc (e.g., floppy or CD-ROM) containing a complete new version of the program. Upon receipt of the upgrade disc, the customer installs the new version of the software on his or her computer. The installation process generally results in the old version of the program being overwritten with the new version. The same problems arise with fixing or modifying the contents of files or folders.
There are several problems with this method of supplying upgrades. First, it generally takes a relatively large amount of time to produce sufficient quantities of discs for distribution to customers. Accordingly, such discs are released only once or twice a year. This reduces the speed at which customers can be supplied with fixes to their programs and may force them to operate the software with errors or other bugs for several months. Second, physical discs are expensive to create and deliver.
Thus, there have been some attempts to deliver upgrades via communication networks such as the Internet or by direct connection using modems. However, even with ever improving transmission capacity and reliability, transmission of large upgrade files can be difficult and time consuming to complete. In response to the difficulties of transmitting large complete files, patch technology has been developed that permits the transmission of smaller, partial programs. In many instances, only certain parts or files need to be repaired or updated in order to update a computer program. Therefore, only a partial or “patch” file needs to be transmitted to the end user. Generally, small files may be transmitted faster and more reliably than larger files. However, existing patch technology is unacceptable when anything more than minor changes need to be delivered to a customer. Accordingly, there is a need for an improved method and system of upgrading electronic data, files or folders using patches. More specifically, there is a need for an improved system and method of generating a patch file.
In addition, most types of computer data or files are to some degree redundant, in that they contain patterns of characters that occur over and over again throughout the file. File compression programs take advantage of this fact. Instead of listing a piece of information over and over again, a file compression program lists that information once, then refers back to it wherever it appears in the original file, thus creating a representation of the original file that is smaller than the original, i.e. the compressed file. An expansion program expands a compressed file back into the original file. The present invention allows one to compress patch files into a .ZIP file and to extract patch files from a .ZIP file. The .ZIP file provides a folder, or archive, of compressed patch files and contains instructions and information needed to direct the patch files to be applied to the specific files to be patched. The files to be patched may, or may not, be contained in the same .ZIP file. The common format of this file is a self-extracting executable .ZIP file.
Compression of computer files has been around for years. Compressing files can save significant amounts of disk space or memory, and transfer time when downloading files from the Internet or transferring files through email. Most files downloaded from the Internet are compressed in some way. Many compression formats have been developed over the years. The zip format, created by the assignee of the present invention, is the most common compressed file format, but there are others in use today. Files with a “.ZIP” extension are compressed files in the zip format. Zip files are indicated by a “.ZIP” filename extension. Zipping a file means compressing the file into the zip format so that the resulting .ZIP file occupies less disk space. Unzipping a file means uncompressing a compressed file in the zip format back into its original form. A .ZIP file is a file which contains one or more computer files that have been compressed with PKZIP®, a data compression program from PKWare, Inc., or another compatible compression program.
PKZIP® is a utility program that performs data compression and archiving. The file that PKZIP® creates is called a “.ZIP” file. PKZIP® can be used to exchange data files between different platforms or machines. PKSFX® is another data compression program from PKWare, Inc. The function of PKSFX® is to turn a .ZIP file into a self-extracting file with a .EXE file extension. A PKSFX® file is an executable file that automatically extracts the files it contains when executed.
A computer file is compressed through the use of one or more compression algorithms. A compression algorithm is essentially a mathematical formula that scans the data in the file for compressible information. For example, compressible information may be any repeating pattern or string that can be represented in a shorter length than the original compressible information. The compression algorithm will then store only the repeated patterns, along with a pointer system, in a file or folder to save space. For standard compression, most of the compression algorithms work in basically this way. Some are more efficient or faster than others.
Generally, the contents of a compressed file cannot be accessed unless the archive is uncompressed. In order to uncompress a file, a user needs to either use the same program used to compress the file, or use another program that is compatible with the particular compression format. That means that users are required to use standalone programs to compress and uncompress their files. The same problem occurs when trying to work with and manipulate compressed archived files. For example, a user wanting to open an existing compressed file, modify the file, or extract data from the file and transfer it to another file would have to command a standalone program to uncompress the original file and command the standalone program to compress the modified file. This process is often burdensome and inconvenient to the user. Therefore, it would be beneficial to create a product that would eliminate the need for separate standalone compression programs, and eliminate the need to separately command a file to be uncompressed or compressed each time the file is opened, modified, or saved.
However, all of the above products are implemented differently from the present invention, and do not include many of the features of the present invention. Many of the above programs have increased performance overhead in processing (compressing/uncompressing) files continuously in and out, and it is often difficult for a user to determine if he or she is working with files contained inside or outside a .ZIP file.
Accordingly, there is a need for a system and method for easy management and manipulation of archive files, especially patch archive files.